﻿using System;
using System.Collections.Generic;

namespace class5Homework
{

    class Program
    {
        public static bool checkPrimeNumber(int x)//检测一个数是否为素数，依次除被检测数之前的数，观察是否有余数，若余数全不为0，返回值为真，若余数出现0，该数不是素数，返回值为假
        {
            bool isPrimeNumber = true;
            for (int i = 2; i < x; i++)
            {
                if (x % i == 0)
                {
                    isPrimeNumber = false;
                    break;
                }
            }
            return isPrimeNumber;
        }
        public static void checkAndAddPrimeNumber(int x,List<int>a)//检测并向list中添加素数
        {
            if (x == 2 || x == 3 || x == 5)//若数为6之前的素数，加入数组a;
            {
                a.Add(x);
            }

            else if (x > 6)//x大于6时，仅当x=6n+1或6n+5时才可能为素数，对可能为素数的x进行素数检测，若为真，加入数组
            {
                if (x % 6 == 1 || x % 6 == 5)
                {
                    if (checkPrimeNumber(x))
                    {
                        a.Add(x);
                    }
                }
            }
        }
        public static int[] findPrimeNumber(int x,List<int>a)//寻找两个对应素数的算法,x为输入偶数，a为包含0到100的素数的数组,结果返回一个包含两个int类型元素的数组
        {
            int num1,num2;
            int[] result = new int[2];
            for(int i=0; i<a.Count;i++)
            {
                num1 = a[i];
                num2 = x - num1;
                if(a.Contains(num2))
                {
                    result[0] = num1;
                    result[1] = num2;
                    break;
                }
            }
            return result;
        }
        static void Main(string[] args)
        {
            List<int> arrayOfPrimeNums=new List<int>();
            int[] result = new int[2];
            int a;
            try
            {
                for (int i = 2; i <= 100; i++)
                {
                    checkAndAddPrimeNumber(i, arrayOfPrimeNums);
                }
                while (true)
                {
                    Console.WriteLine("输入大于2的偶数");
                    a = int.Parse(Console.ReadLine());
                    if (a == 2 || a % 2 != 0)
                    {
                        Console.WriteLine("输入的数不合法，请重新输入");
                    }
                    else
                    {
                        break;
                    }
                }
                result = findPrimeNumber(a, arrayOfPrimeNums);
                Console.WriteLine(a + "=" + result[0] + "+" + result[1]);
            }
            catch(Exception e)
            {

            }
        }
    }
}
